<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../0_assets/vue2.js"></script>
</head>

<body>
    <div id="app">
        <h2>{{ person.name }}</h2>
        <h3>{{ person.job.salary }}</h3>
        <button @click="changeSalary">改变薪水</button>
    </div>
    <script>
        let app = new Vue({
            el: '#app',
            data() {
                return {
                    person: {
                        name: '张三',
                        job: {
                            salary: '20k'
                        }
                    }
                }
            },
            watch: {
                // 普通监听无法监听到嵌套型对象的第二层及以上的变化
                // person() {
                //     // 你会发现，尽管person.job.salary被修改了，这里的输出确并未出现在控制台，这说明根本就没有监听到
                //     console.log('person改变了');
                // },

                // 想要深度监听，你要这样写
                person:{
                    handler(newVal,oldVal){
                        console.log('person改变了，这次你逃不出我的法眼',newVal,oldVal);
                    },
                    deep:true,//代表是否深度监听
                }
            },
            methods: {
                changeSalary() {
                    this.person.job.salary = '30k';
                }
            }
        })
    </script>
</body>

</html>